package com.qingsong.service;

import com.github.pagehelper.PageInfo;
import com.qingsong.dto.*;
import com.qingsong.entity.Dept;
import com.qingsong.entity.Permission;
import com.qingsong.entity.Role;

import java.util.List;

public interface RoleService {
    /**
     * 添加一条角色记录
     * @param roleInsertDTO 角色添加实体
     * @return 影响条目数
     */
    int insert(RoleInsertDTO roleInsertDTO);

    /**
     * 按主键查一条角色记录
     * @param id 角色表主键
     * @return 一条角色记录
     */
    Role selectById(Long id);

    /**
     * 按主键修改一条角色记录
     * @param roleUpdateDTO 角色修改实体
     * @return 影响条目数
     */
    int updateById(RoleUpdateDTO roleUpdateDTO);

    /**
     * 按主键逻辑删除一条角色记录
     * @param id 角色表主键
     * @return 影响条目数
     */
    int logicDeleteById(Long id);

    /**
     * 按主键列表逻辑删除多条角色记录
     * @param ids 角色表主键列表
     * @return 影响条目数
     */
    int logicDeleteByIds(List<Long> ids);

    /**
     * 全查询所有角色记录
     * @return 所有角色记录集合
     */
    List<Role> list();

    /**
     * 分页查询角色记录
     * @param pageDTO 分页实体类
     * @return 分页数据
     */
    PageInfo<Role> page(PageDTO pageDTO);

    PageInfo<Role> pageLikeTitle(RolePageDTO dto);

    /**
     *
     * @param id   角色主键
     * @return     当前角色的全部权限列表
     */
    List<Permission> getPermissions(Long id);

    /**
     *          修改角色的权限列表
     * @param dto    角色修改权限DTO
     * @return    影响条目数
     */
    int updatePermissions(RoleUpdatePermissionsDTO dto);

}
